---
title: "Introduction"
sidebarTitle: "Introduction"
---

In this tutorial, we are going to use Odigos for instrumenting and collecting distributed traces from an application written in Go.

We are going to deploy the application on a virtual machine and use Jaeger as the backend for storing and visualizing the traces.

## Deploying the target application

We are going to install Odigos [demo application](https://github.com/odigos-io/simple-demo) that consists of 6 microservices written in Java, Go, Python, Node.js, .NET and PHP.

<Frame>
    <img src="/images/demo_architecture.png" alt="Architecture of demo application" />
</Frame>

1. Install the application using the following commands:

<Tabs>
  <Tab title="APT">
  ```shell
  sudo apt update
  sudo apt install odigos-demo-frontend
  ```
  </Tab>
  <Tab title="DNF">
  ```shell
  sudo dnf install odigos-demo-frontend
  ```
  </Tab>
</Tabs>

2. Check that the application is running:

```shell
sudo systemctl status odigos-demo-frontend
```

The service should show up in `active (running)` state.

## Deploying Jaeger

This Jaeger setup is intended for demonstration purposes only. In a production environment, you should deploy Jaeger or any other backend solution in a more reliable and scalable manner.

Install Jaeger using the following commands:

1. Download a version of Jaeger which is compatible to your OS and arch from [GitHub releases page](https://github.com/jaegertracing/jaeger/releases) and extract the archive.

Examples for jaeger `v1.0.57`:

<Tabs>
  <Tab title="amd64">
  ```bash
wget https://github.com/jaegertracing/jaeger/releases/download/v1.59.0/jaeger-1.59.0-linux-amd64.tar.gz
tar -xvf jaeger-1.59.0-linux-amd64.tar.gz
cd jaeger-1.59.0-linux-amd64
  ```
  </Tab>
  <Tab title="arm64">
  ```bash
wget https://github.com/jaegertracing/jaeger/releases/download/v1.59.0/jaeger-1.59.0-linux-arm64.tar.gz
tar -xvf jaeger-1.59.0-linux-arm64.tar.gz
cd jaeger-1.59.0-linux-arm64
  ```
  </Tab>
</Tabs>

2. Run the Jaeger All-in-One binary:

```shell
./jaeger-all-in-one --collector.otlp.grpc.host-port 0.0.0.0:44317 --collector.otlp.http.host-port 0.0.0.0:44318
```

We map the OTLP endpoints for Jaeger to different ports (44317\44318 instead of 4317\4318) to avoid conflicts with Odigos collector.

3. Browse to Jaeger UI at `http://localhost:16686`. Replace `localhost` with the IP address of the machine where Jaeger is running if you are accessing it from a different machine.

At this point, jaeger is running and ready to receive traces from the demo application.
